Cropping an Image

The following example creates an MCIWnd window and loads an AVI file. The window includes a crop command in the menu, which crops one-quarter of the height or width from each of the four sides of the frame. The example retrieves the current (initial) dimensions of the source rectangle by using the MCIWndGetSource1RIWQLN macro. The modified source rectangle is half the original height and width and is centered in the original frame. The call to the MCIWndPutSourceAFZGLO macro redefines the coordinates of the source rectangle.

// extern RECT rSource, rDest;

 

case WM_COMMAND:

    switch (wParam)

   

        case IDM_CREATEMCIWND:

            g_hwndMCIWnd = MCIWndCreate( hwnd,

                g_hinst,

                WS_CHILD | WS_VISIBLE,

                "sample.avi" );

            break;

        case IDM_CROPIMAGE:                          // crops image

            MCIWndGetSource(g_hwndMCIWnd, &rSource); // source rectangle

            rDest.left = rSource.left +              // new boundaries

                ((rSource.right - rSource.left) / 4);

            rDest.right = rSource.right -

                ((rSource.right - rSource.left) / 4);

            rDest.top = rSource.top +

                ((rSource.bottom - rSource.top) / 4);

            rDest.bottom = rSource.bottom -

                ((rSource.bottom - rSource.top) / 4);

 

            MCIWndPutSource(g_hwndMCIWnd, &rDest);   // new source rectangle

    }

    break;

 

    // Handle other messages here.